{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# 使用PCA降噪"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 回忆我们之前的例子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.empty((100,2))\n",
    "X[:,0] = np.random.uniform(0., 100., size=100)\n",
    "X[:,1] = 0.75 * X[:,0] + 3. + np.random.normal(0, 5., size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10644bf98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:,0], X[:,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实际有可能是一种情况：真实数据应该是一条直线，但由于各种原因（例如测量仪器的问题）造成数据在直线周围抖动"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.decomposition.pca import PCA\n",
    "\n",
    "pca = PCA(n_components=1)\n",
    "pca.fit(X)\n",
    "X_reduction = pca.transform(X)\n",
    "X_restore = pca.inverse_transform(X_reduction)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10959c5c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X_restore[:,0], X_restore[:,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上边的两个图，完全可以理解为第一个图到第二个图就是把噪音完全去除"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 再举一个手写识别的例子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "\n",
    "digits = datasets.load_digits()\n",
    "X = digits.data\n",
    "y = digits.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 加点噪音\n",
    "noisy_digits = X + np.random.normal(0, 4, size=X.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 为了方便理解这些噪音，我们来绘制一下这些数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10, 64)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example_digits = noisy_digits[y==0,:][:10]\n",
    "np.shape(example_digits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 64)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for num in range(1,10):\n",
    "    X_num = noisy_digits[y==num,:][:10]\n",
    "    example_digits = np.vstack([example_digits, X_num])\n",
    "np.shape(example_digits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Z8PKkYsuugjuz3rCmfFqC9Y37dJLL4W5b+VUYbiqwxj22vfv3x/mLVu2hDlr9WLmf+w5OTm2adOmQI6qVc3MLr/8cjrWF198AXN2XWItOVj7ksKKi4uDrSBYtQxrUWDGP7ujR4+G+T333HMGz/B/q1WrViBztY1gXJ91ZvHixTBn14bCzOErPj7eWSV1Ova5MTN7/fXXYc76HLLvg9KlYcswM+OtdFz27t1rL774YiC/6qqr4P7vv/8+HYv1cmP90VjPxqL+HP7/9BchERERCS0thERERCS0tBASERGR0NJCSEREREJLCyEREREJLS0I44+cAAAgAElEQVSEREREJLS8yucTEhJgY8nx48fD/YcMGULHYiV19erVg3mrVq1gzsorzXgTTKZcuXKwTJ81zbzhhhu8xjfj5dqsCeP06dPpWK6yTCQpKcmuvfbaQD5lyhS4//Dhw73GN+ONB7/88kuYu84RV7NCJiEhwZo2bXrG+1erVo1uu+uuu2DOGud+/fXXMF+wYAGdgzUk9MWaD7PX3czszTffhHm/fv1gzpqPsp+2KIyoqCjYYJmVybsaMc6YMQPmrPnn6tWrYX7eeefROVxlw75cZfIMKzVmzTFZ+XVmZiadgzW89sU+Ty6sISsr4x44cKD3HL6io6Np6bevCy64AObse23u3Lkwd/1UDPtZCJcyZcrY3XffHciHDRsG93dd42699VaYs2vWjh07YO66VroahJ8J/UVIREREQksLIREREQktLYREREQktLQQEhERkdDSQkhERERCy6tqLCsry7755ptAzqoB+vTp4/2EWDO7AQMGwPyKK66gY7EqF1/x8fEwv+yyy+hj8vPzYb5+/XqYz549G+Zdu3alc7iaovqoXr06zFesWEEfw5rKsuo31sjTZefOnd6Pyc7Ohs+bNQZmx25mduONN8L81Vdf9XpOubm5dBurqHA19EVYc1NX09Pnn38e5vfddx/M69atC3N2rpvxyhAmOjra0tLSAvlbb70F90eVLaewihxWecMau7qaVpYvX55u83X48GGYv/DCC/QxrAqVXUfZ9Yc1fTYz69KlSyBzndMMa87rus68/PLLMGfn4j/+8Q/v57Vq1Sqv/QsKCmDVc3Q0/jr9/vvv6VjsPW/YsCHMWZWk6zzMycmh23yx7zxX1dacOXNgfu+998I8IiIC5i1atKBz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mL/22mv0MawyzSU7Oxs2tmUNcs8991w61tSpU71y9r3tOk9SUlICWXT0mS9v9BchERERCS0thERERCS0tBASERGR0NJCSEREREJLCyEREREJrSKpGmNYBZHZ7/1aENYT5v7774e564745ORk/uSA2NhYq1atWiDfsWMH3J9VspiZNWrUCObsOFj1R8WKFekcrOcVExsbC/u4sLlZBYYZ7/XDKqdYBVZRV40dP34cVguxnl6tWrWiY6HKFzOzMWPGwLxMmTIwZxVdZmbvvfce3cagasGoqCi4r+szsGjRIpjHx8fDfMWKFTC/9dZb6Ry+WFUc07t3b7qNVfawSkxWJfnggw+e8fM5E6VKlbIOHToEctaXzVUZyz5vTz/9NMxzc3NhfvDgQTrHTTfdFMhcFTw5OTm2ZcuWQM76ZLFKNjOzTz75BOZz5syhj/FVr149r/3j4uKsZs2agZxVgF1yySV0rAEDBsAc9dszM3v11Ve99jfj1duufnGs5x+rAr3uuuvoWKxi76233oL5hAkTYI4qLU9Bn3VX1fPp9BchERERCS0thERERCS0tBASERGR0NJCSEREREJLCyEREREJrf9o1Vjr1q3pNla9gHp9mfE7z/v27ev9vJiTJ09aZmZmIO/Vqxfc33XX/ddffw1zVuXBKovq1q1L5ygqrMJk1KhR9DEXX3wxzFmFS+nSpWE+ceJEOodvLzWz3yueateu7f04hFUkffHFFzBfsGCB9xyuag8G9fZjPfrWr19Px2FVhx9++CHMXVUbReXXX3+1e++9N5Cz3lKuHkusdxf73LL31fUasmpEl7i4OFohhowbN45umzx5MszT09O9xvKtsHWJjIy0YsWKBXJWKcxyM7PHH38c5uzatHz5cpizyl+zojt2Nscbb7xBH8POOd+quAoVKtBtrr5wDKv869atG9zfVdk4fPhwmK9atQrmt99+O8znzZtH50DrBvUaExERETkDWgiJiIhIaGkhJCIiIqGlhZCIiIiElhZCIiIiElpaCImIiEhoFUn5/JIlS2B+7Ngx+pj+/fvD/MiRIzBnTT5ZI7/CiIqKslKlSgVy1hyuVq1adCxWVtuvXz+Y+zSaPMXVKBE5ceKE7dy5M5BnZGTA/f/xj3/QsV5++WWYs7LggQMHwvy3336jc6DnWtTuueceuu3tt9+GOWvaWadOHZivXLmS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8IwfP56OsWnTJk/G+pki+q8xERERCSxNhERERCSwNBESERGRwNJESERERALL183SDKuWad68OX3Nbbfd5us1//rXv2DOqgrMzC6++GK6DKlUqRLcry+++AKu76oGYjeQs6oNdnP1L7/8Qsdgd90zkZGRzptLC2M3RLvGZhVErAqCVeSZmR08eNCxd1hERIT5qXb49NNP6bJ///vfMH/qqadg3q5duyKPW6Bly5a+1s/Pz4fn/P333w/XHzhwIN0WuqnczGzbtm0wHz58OMxRhVABV0UQkpGRAW9Ebdq0KVy/V69edFs5OTkwHzVqFMxXrVoF87lz59IxtmzZAnPXDc7h4eHwxmhW/MBucDbjN/rGxsbCvG3btjB3dRhAxQHspl2zs9VT6MZodhyu72CPHj1gzopO5syZA/PBgwfTMfzcVGt2tlIQvb+sytTv3yEzs2eeeQbmI0aMgDkr6DFz/40sKaNHj6bL6tatC/O9e/fCvHv37jBv0qQJHQMte/311+n6hekXIREREQksTYREREQksDQREhERkcDSREhEREQCSxMhERERCawSqRpjWJWJGW+N0bNnT5izaocVK1bQX+rlBQAAIABJREFUMdhd6a473BFWfcIqWczMnnzySZivXbsW5uzx866Kg+JUIyCs342rt0uFChVgzh6XP3HiRJg//PDDdAzWe8klNzcX9quLiYmB67tatKC+c2b8s73qqqtgzlqFmJm99tprdBmSnZ0N+7mx84p9TmZm1113HcwrVqzoa5+6devma32XqKgo2LqGVU+6quI6duzoa2zWhsVVaZmdne1rDBfWkuihhx6ir3nggQdgzlrHuM4HBvVNZFWgLn379vWVu7C2FaxdkAtrA8OqRpOTk61z585F3o6rf+aPP/4Ic1bFx9q9DBkyhI7x7bff0mUlxdVGZNGiRTDv1KkTzFnbIVd1n6vqsSj0i5CIiIgEliZCIiIiEliaCImIiEhgaSIkIiIigaWJkIiIiASWJkIiIiISWCVSPo/KK83MvvrqK/qaWbNmwXzGjBkwZ6XMrNmkmdm0adPoMiQ3N9dSU1M9+c033wzXd5V3X3755TBnJfesyV5aWhodY/369XSZH71794Z5YmIifU10dDTMo6KiYH7s2DGYly5d+k/2zp/8/HzYEHL//v1w/QkTJtBtjR8/HuYvvfSSr31ylcj7bYhYrlw52LiXnYuuc4Q9HoF9tuzxAPfddx8dw/V4Aj/Y98D1/Zg3bx7Mx4wZA/Prr78e5q7Pe8eOHXQZc/r0adu8ebMnZ9eGsWPH0m2x5qpLly71tU+sDN/MrHXr1p6sOOXKqJmuWfGaFfvFSuHN/B/LhRdeaB9++KEnX758OVz/888/p9tiJeTs0S/sMRnssSVmZpMnT6bLSsru3bvpsl27dsGcfXd/+OEH3+Oj65yrMXBh+kVIREREAksTIREREQksTYREREQksDQREhERkcDSREhEREQCq0SqxurXrw9zVnVjZjZp0iSYowoFM165NWLECDrGypUr6TKkTJkyFhcX58lZ07g777yTbuv222/3NTY7jsWLF9PXsMo7v/r16wfze+65h77mkUcegbnfCoXnn3/e1/p/JiIiAlZDseqat99+m25rzZo1MC9Vyt+/H7744gu6zNW4Fzl16hSskGANCZctW+Zr+2a8sSNrzssqX8zMGjRoAPMnnnjC1z6hKh0zs1deecXXdorD1bx15syZvrcXFhYGq/xYFY2retPV7NKPO+64gy5D17k33njD9xhNmjTx/Rq/WKXytm3bSmyMU6dOweotVkHoaizdpUsXmLNq6E2bNsG8OOehS05Ojh08eNCTsybDroao77zzjq+xGzVqBPO7776bvmb+/PmerHz58kUeU78IiYiISGBpIiQiIiKBpYmQiIiIBJYmQiIiIhJYmgiJiIhIYPmqGsvMzIR3xqNKKzOz6667jm6LVY0tWbIE5ocPH4a5q8dJmzZt6DIkJyfHfv/9d0/eqlUruL6rP8/06dN9jc36Il199dX0NayCwC9WFVOcfkJ16tSB+auvvgrzli1b0m0tWLDA9/hZWVn266+/Fnm/Bg8eTLfFekz16tUL5qNGjYJ5RkYGHWPjxo10GVK+fHlr0aKFJ2fVU6gvWYGwsDCY16hRA+bjxo2D+fvvv0/HuPDCC+kyhH0HWX+wJ598km6LVa2y3l2s35/re56SkkKXMZGRkdawYUNPvmLFCrj+tddeS7f1888/+9qvzp07w9xVAZubm+vJinNtmDNnDsyHDx9OX3P8+HGY5+TkwJy9V6738OTJk3QZUr58edh3j/XiY704XWNPnToV5uxzYpXbxZWammpTpkzx5KyHpusax669F198McyzsrJgjirDSop+ERIREZHA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REhEREQCSxMhERERCSzfvcb8VIGwu8XNzGJiYmDO+jKxXkM1atSgYxw8eBDmPXv2hHmlSpXg3ecMq/QyM1g1YWZ24MABmLOKCldFjt/qMDPc96ZJkya+t8N697C+bIsWLYI5q/Iwc/fo8Yvtl6sXlt+qI9bbZufOnfQ19erV8zVGXl4e7AXGqmuuuOIKuq3JkyfD/NVXX4U56/fn6gHkt2rszJkzsM/Snj174PquylRm1apVMJ80aRLMp0yZQrfFlk2dOtX3ftWuXRvmN9xwA31Nu3btYO73u+OqDJs9e7YnY/3ozM5eG9D1nVXSsqpcM7N58+bBnB0fq9CsUqUKHeOXX36hy/zYvHkzzFu3bk1fs27dOphv3boV5qwSytVXa+XKlXSZX6yycuzYsfQ17FjY+c76Lw4dOpSOgXrulStXjq5fmH4REhERkcDSREhEREQCSxMhERERCSxNhERERCSwNBESERGRwPJVNeaXqw8PuwO8efPmMF+/fj3M586d63/HiPDwcNjjZcaMGXD9q6++mm6L3fnOesWwfPfu3XSM6dOn02UMqtJi1RyuahlWkTd//nyYs4oKl+IcXygUgr3vWAUB621nxnsgRUdHw5z1JmKVkGb+e52Fh4dbzZo1PTnKzMyOHz9Ot7VmzRo6BsI+D1eFlKuiDImMjIRVjKz6jPV3MzPbv38/zJ944gmYs2q5rl270jHYe+iSm5sLrw+33norXN8hADerAAACnElEQVTVM5H1yWLVqew8cSlfvrwnK1WK/xu6TJkysEqLfW9atmxJt7Vr1y6YsypC1qcqPT2djlG/fn26zA/2t8tVGZubm+trW6ii0sxs9erVdAxXhZ9fzzzzDMxd/cxQ1aEZrwT/4YcffO8XqmJ2ve+F6RchERERCSxNhERERCSwNBESERGRwNJESERERAJLEyEREREJLE2EREREJLBKpHx+4cKFMJ84cSJ9zYcffghz1kSwVatWML/00kvpGKz00q97770X5p999hl9zfPPPw/z5cuXw7xz584wz8nJoWOwxrVMdna2paSkePKyZcvC9V2lycOGDYN5VFQUzBs3bgxzV0PC++67D+asQa3Z2ZJJP8322OdUsC2kT58+MB84cCDMXeWr7HEDrLkhw5oxJiYm0tew0vpu3brBnJUsu5pm+nXy5ElYCrxhwwa4/oABA+i2XnjhBZizpsvNmjWDOXssgpnZ2rVr6TKmTJkyFhsbW+T12fXHzOynn36C+XPPPQdzVmbNHvdhZtahQwdPVrFiRbo+K59n3+d3332Xbuuxxx6D+bPPPgtz9qgTdr0yM6tTpw5dhmRmZsJGrZUqVYLrHz58mG6LNa9u2LAhzNljESZMmEDHYM2Si4OVwt900030Nd999x3Mv/zyS5i3b98e5q6/t3+VfhESERGRwNJESERERAJLEyEREREJLE2EREREJLA0ERIREZHACguFQkVfOSzsiJnh0pFzS2IoFPKUNej4zhnw+MzO/2PU8Z0zzvdz9Hw/PjOdo+f6MdLjK8zXREhERETkfKL/GhMREZHA0kRIREREAksTIREREQksTYREREQksDQREhERkcDSREhEREQCSxMhERERCSxNhERERCSwNBESERGRwPo/xpUc6wDuYaoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109a1de10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digits(data):\n",
    "    fig, axes = plt.subplots(10, 10, figsize=(10,10), \n",
    "                            subplot_kw={'xticks':[], 'yticks':[]}, \n",
    "                            gridspec_kw=dict(hspace=0.1, wspace=0.1))\n",
    "    for i, ax in enumerate(axes.flat):\n",
    "        ax.imshow(data[i].reshape(8,8), cmap='binary', interpolation='nearest', clim=(0,16))\n",
    "    plt.show()\n",
    "    \n",
    "plot_digits(example_digits)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到噪音非常明显，下面我们用PCA进行降噪，看看显示效果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca = PCA(0.5)\n",
    "\n",
    "pca.fit(noisy_digits)\n",
    "\n",
    "pca.n_components_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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W9+9e3eY9+zZk46BJkmuY/R4+q8xERERiSxNhERERCSyNBESERGRyNJESERERCLL62bpIAhgBQG7KZHdyGfGKzcmTpwIc3ZDneuGqLx589LXkDAMYdXT+++/D5f3vSHazKxVq1Yw79KlC8wbN27sPYavWbNmwfybb76h72FVCv3794c520/sxlwzfhP+iaAbh99991247DPPPEPXU7NmTZjXq1cP5rfffjvM69evT8fwFYYhvHn/yy+/hMu//vrrdF2oOsuMV4exao6MjAw6hq8gCGAF5YcffgiXZ9ceM34zJqt4ZOcaK7r4LdA6p0yZApf9+uuv6XrYZy5fvjzMa9SoAXPXeZis7gNsH7Ibos14AQIrpLj66qth7qouTtb2bd++Hebz5s2j79m9ezfMe/ToAXN2c/6+ffvoGKwQJxGoWMrM7L333qPvqVWrFsyHDh0Kc1bByG8q3/0AACAASURBVCoIk0F/ERIREZHI0kRIREREIksTIREREYksTYREREQksjQREhERkcjyqhpjWMWBq0/WhAkTvMZgFWDsseZm/tUeQRBYvnz54vJ169Z5rcfMrFu3bjBn1WGsOsKFVb8wrOKIVRWwKiEzszvuuAPml19+uddn+umnn+hriVbroOPR1ReOee2112DOqslcvXAY1t6EYceo73rMePuLvXv3wpxVKCWzKsWM993zxdpGsFYhrJ+hqyKH9dY7EXRss2tcgQIF6HrYNrL+b2eddRbMXVVjyaqaY9eTa665hr6HXWdYuw5Wnerq9+Xbc49h1Zauno3nnXcezC+44AKYs9Yirt6W7HxOBKvoYseVGa+uZtW3jOsah85R1nYI0V+EREREJLI0ERIREZHI0kRIREREIksTIREREYksTYREREQksjQREhERkcjyKp8/evQobBJ35plnwuVdpdGrVq3yGdomTZoEc1e5tqukDzly5Iht27YtLq9evbrXeszM/vnPf8KcNRJNpHzeVVaLBEEAS3RXr14Nl//+++/pujZv3gxzVtZasGBBmLOSUzN3SS+Tm5sLS0m3bt3qva65c+fCnDUerFSpEsxZmbqZ+xETSCwWs/3798fl7Pt1lbazRokVKlSAOTtG2flv5l96ffToUVjuy0rbXQ1fR40aBXNWzszKeV37DzWhThR6LIIZ37dmZq+++irMr7rqKpizfci+30SEYQgfa8KuDeiae8yQIUNgzhqcsusSa9ptxhvU+lq6dCnM58yZQ9/Dzv8nnngC5uxRAxdddBEdw3X8+Nq4cSPMXY+ReOedd2BepUoVmN9zzz0wZ43aGZ/fD/1FSERERCJLEyERERGJLE2EREREJLI0ERIREZHI0kRIREREIsuraixPnjyw6RtrxHbXXXfRdV133XUwX7hwIcz/9a9/wdzVEJVVvzB58+a10qVLx+WdO3eGy7ua2bHPyxrHsUqkZs2a0TGShTWnc911P378eJiPHj0a5s8++yzMWZPERKWmplrx4sXjclZVkZmZSdfVtm1bmN9///0wf+SRR2A+cuRIOsa1115LX0NSUlIsLS0tLm/VqhVc/o033qDr+uabb2COGvOa8epJdv4nIk+ePHB9TZo0gcuPGTOGrmvq1KkwZ9WsK1asgPm5555Lx3BVPfpiVa6s8aiZ2cyZM2Gemoov7awZq6vyzxdrDMyqKtlvgRn/PZg4cSLMFy1aBPPJkyfTMZJVNcYan7oqC1n19LJly2A+YsQImLPtNjOrU6cOfc0XawyMrknHvPzyy15jTJs2DebvvvsufY9r/JOhvwiJiIhIZGkiJCIiIpGliZCIiIhEliZCIiIiElmaCImIiEhkeVWN+WrYsCF9jfW3Yr2JPvroI5iznjOudSXLLbfcQl+bPXs2zPfs2QNz1v/I1YfH1WcJCcMQ9oSpVasWXP7666+n60LVdWa899HQoUNhzvpdJRvrF3X11VfT97DeQfXr14f5V199BfPc3Fz3h0uC9PR0mLuq0tix2K9fP5izyrQ/Auur5+rRx84pVi3Hxjh8+DAdA/XUOhmo5yCrcr3xxhvperKysmD+5ptvwpz1vWIVkslUs2ZNmNetW5e+Z8qUKTBnx+7atWthzqqdzHjVrK/atWvD3HUdZds+fPhwmL/11lswd/WFZNf3RLAKStc2su+FbcvYsWNhPmjQIDqGqsZEREREEqSJkIiIiESWJkIiIiISWZoIiYiISGRpIiQiIiKRlZSqMdY/69NPP6XvYdUWrIqIVU/VqFHjBJ/u5MViMTt06FBcHoYhXP7zzz+n62J3xDdo0ADmrAKM9QYy869GYj2AWOXCt99+S9e1Y8cOmLP+a02bNj2JT5gcqAqEVbm5sEq3WbNmwfzOO++EeevWrekY6Hg7EVRxtHv3brisqxcfO37Zuebbuy+Z2PZNnz6dvueFF16A+fLly2HOzgPXOYiqME8G6uO3f/9+uCyrnDLjlY0rV6486XH/KOjaY+auyvvss89gvmTJEpj37NkT5q6ehuz67oKuMZUrV4bLnnPOOXQ96Fw2M9u0aRPM2e9EoUKF6BiJVMWFYQj3S5kyZbzHZ33Q2LyhXbt2MC9ZsiQd47fSX4REREQksjQREhERkcjSREhEREQiSxMhERERiSxNhERERCSyNBESERGRyPIqn2cldUWKFIHLsxJHM7MvvvgC5qykbvDgwTCvV68eHYOVJvpizVv//ve/e6+ra9euML/gggu815Wa6v/0A7QtrHx08eLFdD0zZ86EOSt9vOOOO07i0/12R48etX379sXl7Lvq0qULXRdr/vf444/DnDUrTaYwDOFjE1hpsuszTZw4EeZDhgyBOWtcm0ysMTDbf7feeitd19atW2H+t7/9DeY9evQ4iU/4v8444wzv95jh85A1Bn3llVfoelizzYceegjmrkc5JAv7nWCPTKlTpw5d14YNG2DOHk9y8803n8Qn/F++zbnDMIQl6axMnT36wYyfa19//TXMn3vuOZifd955dIxEfgeDIIBNiNnjPlgjYzOzMWPGwJwdix9++CHMCxYsSMf4rfQXIREREYksTYREREQksjQREhERkcjSREhEREQiSxMhERERiazAp+FcEAQ7zGz97/dx/jCZYRiWOD7U9p0y4PaZnf7bqO07ZZzux+jpvn1mOkZP9W2k23c8r4mQiIiIyOlE/zUmIiIikaWJkIiIiESWJkIiIiISWV49GjIyMsKsrKykDLxx40aYs8eBly1bFubssfRm/NHp2dnZOegmKrZ97D4q16PZ2eP99+/fD/Py5cvDHD3m/ESfa968eV7bxx4Nf+DAATr25s2bYc6+kwoVKsA8kRYFbP+ZJXcf7t27F+Y//fQTzDMyMmDuaoXCXps/f77XPmRYWwMzs9WrV8OcbUeJEid13+FJ8T0HE8HaM6D2D/83NswLFy5Mx2D7j52D/zfO776N7LpYpkyZpIy7bt06y8nJgSeP7zmIWuIcs2nTJphXrFgR5mlpaXRdvpJ1jLruw92yZQvMDx48CPP09HSYn3nmmXQMdiwkcowmch1l18s9e/bAvHjx4jD33beuY/R4XhOhrKwsmzt3rteHYXr16gVz9qX1798f5q6LMzsAUlNT4d3wbPvYhdM1SRk4cCDMWU+W559/HubVqlWjY7Afufz583ttH5uczZkzh479yCOPwJx9J2z76tevT8dggiCg1QxZWVnwc6P+VWbufTh58mSYf/rppzBnfeRKlSpFxyhWrBjM09LSvPYhs27dOvpax44dYd69e3eY33bbbSc97omwfZjMa8ydd94J86VLl8L8pptugvlFF11ExyhatCjMCxYs6DxGk7WNd911F8zZMdenT5+kjNuoUSP6Gtu+I0eOwOWnTp1K1/Xggw/C/KWXXoJ58+bN6boY9uOekpJCj9HZs2ef9Hpcvb5YL8B58+bB/KqrroL5pZdeSscoWbIkzE90jKLrKNuHrNehmdnHH38M888++wzmrP9js2bN6BhI48aNT3pZ/deYiIiIRJYmQiIiIhJZmgiJiIhIZGkiJCIiIpHldbN0LBaDd7Ozyp9Ro0bRdQ0dOhTmI0aMgDmrOnJVHOTPn5++5sNVmcaw7WM3B7tuimZ8P1cYhpabmxuX5+TkwOVd+++7776DObtBNZGbohOFKhhcN0Uzl1xyCczZjd/sBtLs7Gw6BquGZNg+ZBVuL774Il0XuyETrf+PEoYhvLGdncsvv/wyXdcrr7wC88ceewzmN9xww0l8wuRAN9DmyZMHLjty5Ei6Hrb9w4YNS+hz/Z7Wr8f35j7zzDP0Pax4JpGbohlWNetaHh2j7KboMWPG0HU9/fTTMP/zn/8M806dOsHcVZmayLWPYTdF7969m77nmmuugfmzzz4Lc7ZvXdcl1/afDP1FSERERCJLEyERERGJLE2EREREJLI0ERIREZHI0kRIREREIsvrVuuUlBRYIbZjxw64/HXXXUfXVbduXa/3sBYJrBLBjFeauaAKgpQU//li69atYc62OxGuR7cjQRDAbWGVGRMnTqTrOvfcc2HuqlLy5bt9iWDVby6sMo5hvXPMeE8hJggCWCGxfft2uPx7771H13X33XfD/MILL4Q5q65J5PxwQVV/X375JVyWtZgw4/37nnjiicQ+GMDa75wIqhBjfadYOxszsyZNmsD88ssvhzlrA8Gur2Z4f7j6Z4VhCFsxsP6LrhYbropLH66qJlefLiQIAlixu3LlSrj8gAEDvNZvxtvcsH54Lr5VccegfcxabPTo0YOuhx1b7du39/o8rsow1G7KdYweT38REhERkcjSREhEREQiSxMhERERiSxNhERERCSyNBESERGRyNJESERERCLLq3yelUVOnz7de+Dbb78d5qzUb/LkyTCvXbs2HcO3LJI1tGSN5nbu3EnXxbZv5syZXp/JJZFmgajclzXs3LRpE10XazDKSiUTafzHmlCeiE9Dy08++YSup2rVqjBnTRRr1KgBc1dD3WQ1BmblwTVr1qTvYY8BSEtLg3myy+SRo0eP2v79++PyREqAK1WqlIyP5JTIcc2uM4cOHYLLFytWjK6LPerg22+/hXmtWrVgXrlyZToGgkrq//s1VF7OSq/r1atH19WgQQOvz8W4HlNRtGhRr3UdPXrU9uzZE5ez/eQqeWcl4eyRNIlI5LyNxWLweNy1axdc3tVYlpkyZQrMb775Zu91od9o1zF6PP1FSERERCJLEyERERGJLE2EREREJLI0ERIREZHI0kRIREREIsuraiwIAlh9s3btWu+BP/jgA5gPGTIE5llZWTB/+umnvcf2tW7dOpgPGjSIvmfs2LEw37ZtG8xZ49Nu3brRMXyrYlJSUmCVi6shIcOalbKmuY8++ijMq1evTsdg1UsuYRjCCqMff/wRLv/yyy/Tde3btw/m119/Pcw7dOgA84EDB9IxqlSpQl9DWMXRggUL4PKuprKNGzeGOar4MeOVSBUrVqRj+FbF5cmTxwoXLnzSn8mFNUR94YUXYM6qfurUqUPHcFU8Mew6yo7REiVK0HWxZrTsuL7llltgfv/999MxSpUqRV9j0Dm4YsUKuKyrmeZNN90Ec9Rk04w3Ky1btiwdw1dqaiqsNCtUqBBc/rzzzqPrYg1nH3/8cZi3adMG5qVLl6ZjJFJxyX4rWONc1z5E1yszfiyy6+69995Lx/it9BchERERiSxNhERERCSyNBESERGRyNJESERERCJLEyERERGJLO9eY6iPU/369eHyBQsWpOtiFUGsdw/re8WqsMz875YPggDe/c4qumbMmEHXxT4Xq4I499xzYf7aa6/RMfr160dfQ1ivuOLFi3utx4xXsrCqBvZZO3bsSMe49tprvT8X63OEjlsz9zHKKpVYLxxWyfKPf/yDjsGqQ5gwDGE1FKuKYZ/J9Rqrcpk2bRrMXf2gzj77bPoag3oEscolV2Uh6wXIjtFx48bBnPVEMjN766236GtMGIbwuy9Tpgxcnl1/zHjFHruerFq1CuasitfM7NZbb43LwjCky8diMTtw4EBczo6F1atX03Wx35ZmzZrBnFUws4o1M16RzLD9x3pbuXomsopddl1iPb0uuOACOoarMpdh1bfsPHRdx9esWQPzcuXKwZwdo++//z4dA1Xsuo7R4+kvQiIiIhJZmgiJiIhIZGkiJCIiIpGliZCIiIhEliZCIiIiElleVWNmuBKrVatWcNmhQ4fS9bz33nsw37NnD8ybNm0Kc9bHxMxs79699DUmJSV+bsj6CXXq1ImuZ+HChTBnd9dnZ2fD/MUXX6RjPPDAA/Q1Bm3fOeecA5d19Y9ZuXIlzFllEasE2L9/Px0jkR45TGZmJsxd3+HkyZNhXrt2bZjPmTMH5mzbzcwOHTpEX0NSUlJgpVS7du3g8my7zczWr18Pc1ZF+M0338B86dKldIzHHnuMvoawysYaNWrA5VlVkRn/vKxK6YcffoD5zz//TMdg1ysXVp1auXJluLyrIoj1mEO9sMzMFi1aBHPWl83M7C9/+UtcxqowzX49RlG/uBYtWsDlGzZsSNe1ceNGmDdq1AjmkyZNgvnmzZvpGJdddhl9jXFdG4/nqhpj5yDrQThz5kyYu47D22+/3fHpMNYPj1UpuqrGJk6cCHPWmw2d/2bu68xFF10Ul7mO0ePpL0IiIiISWZoIiYiISGRpIiQiIiKRpYmQiIiIRJYmQiIiIhJZmgiJiIhIZHmVzwdBYPny5Tvp5VGzvmPGjx8Pc1beyUrYXQ3zfJquJaJPnz70Nfa5fEs1//znP9PXtm/f7rUu1pCUNRcdO3YsXVffvn1hPmrUKJh369YN5ueffz4dI3/+/PS1ZOnduzd9jZWwXnXVVTBnDQmffPJJOoZv+TyDHotgZjZ79mz6niuuuALm7NysVKkSzLt27UrHOHjwIH0NSUlJcTbCPR57XIMZP+bYOVWrVi2YDxo0iI7BSoBPhO0v3/GvvvpqmPs2g73uuuvoa/v27YvLfEqTj2Fl0X//+9/pe9gjSliZPPPXv/6VvuZ6hAcSBAFssMrK5F2NldmjHFgTXNbYlT1exsz9+AcXn2OUHYdmvGkwmx/UrFkT5uw3xwx/VvZdwfef9JIiIiIipxlNhERERCSyNBESERGRyNJESERERCJLEyERERGJrMCnsioIgh1mhrvEnVoywzAscXyo7TtlwO0zO/23Udt3yjjdj9HTffvMdIye6ttIt+94XhMhERERkdOJ/mtMREREIksTIREREYksTYREREQksrxabGRkZISodQR73Dp6NPsx7LHbO3fu9PlIVr58efpaRkYGzBcsWJCDbqJi25eIdevWwZxtX7FixWDu2j7WGiM7O9tr+9h9YocPH6Zjs9YQ69fj++vY4+fLlClDxyhevDjM58+fD7fPzH8fxmIx+tqWLVtgvnfvXpizfXjmmWfSMQoUKADzefPmJeUYPXDgAH3Nd/tSU/HlomLFinQMtu1sH/pun6t9ADsW2XWJtRQoXbo0HYO1VUnmMeo6D7///vuTXo8Z/7yuYzQtLS0uW79+veXk5MAeBr7bt2fPHvrajh07vN7DromsPYyZWeHChWHuex1lWGsRM7OtW7fCfNeuXTAvWrQozEuWLEnHYNcYtn1myb3OLF++HObsd6dcuXIwZ9dXM4Otv9atW0eP0eN5TYSysrJs7ty5cfnu3bvh8l9//TVd18cffwzzd9991+cj2X333Udfu+mmm2Cenp4Or5Bs+xLB+hwNGzYM5m3btoX5888/T8dgF+ggCLy2j/2YrFy5ko69YMECmN92220wT09Ph/kjjzxCx7j++uthXrhwYVrN4LsPXZP1/v37w3zy5MkwZ/2M2rVrR8eoVq0azPPnz5+UY3TmzJn0tX79+sF8ypQpMGcX4QEDBtAxWD+zQoUKJWX7XMdojx49YD516lSYsx5n7Jg2M+vVqxfMk3mMrlixgr5WvXr1k16PmdmNN94I80suuYS+p0WLFnFZkyZN6PJs+9g/mNn5ZGb25ptvwnzcuHEwZ9fEN954g47B+h3myZMnKcco+weHmdnAgQNhPnr0aJh37NgR5nfddRcdg11jUlNTk3aMuq4zF1xwAczZBPHOO++EOfs9MDOrUKFCXNaoUSO6/PH0X2MiIiISWZoIiYiISGRpIiQiIiKRpYmQiIiIRJbXzdJ0JaSaZMmSJfQ97EYmVrHy0UcfeY1txqtAfLGbFSdMmEDfs2zZMph37twZ5uxGQnbHv5lZbm4ufc1H/vz5Yc4qNsx4lcDrr78O80GDBsHcdSOoq6IrWb766iv6Gqv869SpE8wXLlwI8wYNGtAxqlSpQl/zkZOTA/Nnn32WvqdZs2YwP/vss2H+yiuvwJxV95nxasFkeeqpp+hrmzZtgvmsWbNgzgoW2HrMzA4ePOj4dFgYhvBGUVbxdPfdd3uP0b17d5i/+OKLMHfdWLp///64LJFzc/Xq1TBn13Yzs5YtW8KcXdvZDb6uqqrf23vvvUdfmz17NszZTdTDhw+HOavMMvv1xudkYb8J7LgyM6tVqxbM2Y3tr776Kszbt29Px/jll1/iMp+uGfqLkIiIiESWJkIiIiISWZoIiYiISGRpIiQiIiKRpYmQiIiIRFZSqsbYo+n79OlD34Pu8jbjd6Wz6p7WrVvTMc444wz6mo+NGzfC3NWeYdq0aTBnVTzbtm2DOWtNYcb7fSVL/fr16Wusdw+rUGCtNFjvIzNeSZdMrOedmdn9998P8yDA7Wv+8Y9/wPzqq6+mY7DzwBerUnTtw759+8L8nXfegXlmZibMk1X5lgjWJ8rMXZGIsJ5erIouUUEQwAox1j/LdY6wyhjW8uCtt96CObuGm+FWCD4VOcds374d5m3atKHvYe1pWOUfq1By9Rr7va8zrmsMu2aw1imDBw+GuWt/JLP6ln1XrJLWjLcFYddX1pqrRAnYFs3M8G+hz3brL0IiIiISWZoIiYiISGRpIiQiIiKR9f/au/MgKerzj+PPsLLcCLsrN+xCwAQBQZFLOVVICsESioSAEIQoETUkIBUKYpmIYjRBUTBqKlUhoBZigUcwAgE2CKFUYLmM8eBcbllOuSTCTv6w+NUv7PP57vYwmIJ+v/78TE9/u6d7er4s/fTDRAgAAMQWEyEAABBbTIQAAEBsXdSmq6qk18zs/vvvd/N//etfbt6nTx8337x5sxyjXr168rUoVPl8qOxSNVCcP3++m6vmggcPHpRjhJpdRqHKWpcuXRp5XdOnT3dz9RmGmuZWqVIl8vjK+vXr3bygoEC+R5VNq/LywsJCN9+xY4cco2rVqvK1KLKystx8xYoV8j3qnPvoo4/cXJWqh8YYOHCgfC0K1VQ2VNr+j3/8w81feeUVN2/UqJGbh5rm5uTkyNeiUk1+hwwZEnldoUeXeEKPGvH2MfS9VVSj1BkzZsj3qGbNqrmqOqeXLFkix7jtttvka1Goa0no0QSqGaxqXt2mTRs3D/3WpfM6qhp9h76H6tEwTz31lJurRweEmh+3bt26RBal4TN/EQIAALHFRAgAAMQWEyEAABBbTIQAAEBsMRECAACxFenW/2QyaadPny6RV6hQwV1+7Nixcl35+flu3q5dOzdv3769mzds2FCOUb16dfmaJ5lMug0GK1as6C6/adMmuS7VfFRVFu3bt8/N77zzTjlGzZo15WtRbNu2zc1Xr14t36MaQf7tb3+LNHboGGVmZkZa1zles72NGze6yy5YsECuZ926dW4e+lw8oX1UlTSKOkfV8Qg1fFT7oRpdqm0NVb6lcgy9akzVnFZVD5npylRFVd6pyh6z6MfvHO8cPXTokLvsX//6V7mekSNHurmqQFNCVWCqybCizlH1+Yauo6oqWK1LfddCzXlTOYbeOaqa/L7++utyPfPmzXPzDRs2uLmqYEzXb8H/5+3j4cOH3WVfeOEFuZ7Qax71OarKUbPUv4f/9/4LejcAAMAljIkQAACILSZCAAAgtpgIAQCA2GIiBAAAYitS1VgikXArxLwKATOzTp06yXWpipyf/vSnbj506FA3D/UfiSqRSLg9wpo1a+Yur3qimJnNmTMn0tj33HOPm4eq4i70Tvlz6tev7+YPPPCAfE+TJk3cfO/evW6+e/duN2/ZsmUpWxed97k0btzYXbZt27ZyPVdddZWbqyoaNYaqhEyFOkdV1cjo0aPlup588kk3V32qbrzxRjdfuHChHCMVXo8g1UvphhtukOupUaOGmz/33HNuftddd7l506ZN5Rip8s7RBg0auMuGejaG+h16hg8f7uZdu3aNtJ4QdY6q79Pjjz8u16V+D8aMGePm48ePd/OtW7fKMVLhXQPUNTFUkTd48GA3VxXXqnLq6quvlmOkyvsequq7UD9F9TvVpUsXN1e939T3OR34ixAAAIgtJkIAACC2mAgBAIDYYiIEAABii4kQAACIrUhVY2Z+lYJXIWBmlpubK9dzyy23uLmqDlNUpUWqkslkiUxVFoUqjpYuXermbdq0cfMRI0a4ueq7YpZaNZK3f+n8DFX1kqpQ6tixY9rGDlEVCi1atJDvmT9/vpurfkYDBgxw82uuuaaUrSu7qP3+VG8iM7PWrVu7uaoOUzp37hxp+ZDi4mI7duxYiVxVq4waNUquS11Lxo0b5+YTJ050c6965kIkk0m3d5qqTp0yZYpcl7oGNW/e3M0nTJhQhi28cN7vRHZ2trtsr1695HpUVZWqDlNURVcqVC+1Dh06uMs/8sgjcl2qmva6665z8z59+pRhC9PD64enemiq3y8zs4KCAjf/8Y9/7ObqN/LUqVNyjAvFX4QAAEBsMRECAACxxUQIAADEFhMhAAAQW0yEAABAbDERAgAAsRW5fN4rJT169Ki77BdffCHXo8oD/5dUabJqbHjmzBm5LtUMsnbt2m7+/vvvu3mo6aq3ranwSnnNzLZs2SLfo0rL1f6Fyiu/CSdOnHBz9egHM7NNmza5uXoshCpZTifV+Fg1Y9y4caNclzpW3iMWzo3tqVq1qhwjqnLlylnlypVL5Kp0ds+ePXJdqmxXNaJN536Uxvssjx8/7i4bOkfVd/f55593c1WiH+KVUZfG+53Yv3+/u+zs2bPlenJyciJtU7oaUYeo76A6Fqqs3kw//qFVq1Zurh7Roc4ds9TPa+8c9R5tYaYfKWKmH6mimtGqY64ev5AO/EUIAADEFhMhAAAQW0yEAABAbDERAgAAscVECAAAxFZCVYi4CycSRWZWePE25xuTm0wmrzo/ZP8uGe7+mV3++8j+XTIu93P0ct8/M87RS30f5f6dL9JECAAA4HLCf40BAIDYYiIEAABii4kQAACIrUgtNnJycpJ5eXklctVqQj3238zs8OHDbq4ex12nTp3SN7CMCgoKDng3Uan9U49O3717txzDe8S8E8CXGAAAF0tJREFUmdmXX37p5qpdRr169eQYNWrUcPP169dH2j91/NQj8c3MioqK3Nxrj2BmVqtWLTf3HlV/TsWKFd1cHT8zvY+qTcrevXvl+Kotx8mTJ908MzPTzb3tOUd9XmvXro10DL/66it3Pfv27ZNjq8flq0ffZ2Vlubl6JH5I1O+gaqmg2vuYmR08eNDNVasQde2pUqWKHEMdc3X8zPQ+qvs11X6EXlOtJtQxjNq+YPv27XbgwAH3g4x6joauM+o7qM4HtR9XXVWme2b/S9RzVFG/dWZ639Vxqlatmpur89BMn++pnKPqtyLUTksdQ/Wbp/ZRfT/N/DY0hYWF8hw9X6SJUF5enq1Zs6ZEfujQIXf5P/zhD3Jdr7/+upv379/fzSdMmFCGLSybRCLh3g2fl5dnH3zwQYlcTXgeeughOYa6eH766aduvm3bNjefNGmSHKNv375uXrNmTbl/UY7f9OnT5dgvvviim6secvfdd5+bf+tb35JjfPvb33bzjIwMWc2g9lH9YE6ePFmOv2rVKjdft26dm6tJ65///Gc5Rtu2bd28fPnykY6hmtA98cQTcuxly5a5uepBNmjQIDcfNmyYHEP9IIe+g97+qUnbokWL5Ngvv/xypG1S155OnTrJMerXr+/mlSpVinyOqn9wqf0wM5s1a5abq39g3HnnnW7+ox/9SI7hUb0UzaKfo6HrjOrBqP5BOWTIEDdX15+QqOeoMmfOHPna73//ezdXx6lr165u3qhRIzmGmiRlZmYGz9HVq1eXyNVvxYIFC+T46jpaWOgP36NHDzdX308z/w8loe/t+fivMQAAEFtMhAAAQGwxEQIAALEV6R4hRd3YtX37dvkedSOsuhnrueeec/PevXvLMZo0aSJfU7ybnNX9JcePH5frufrqq8u8fjN983HoRkl1r0NU6viF9k/dv6P+737atGluPmrUKDlG6P6hEO+m0w8//NBdNnQfW/v27d382muvdXN1Y7I61830jclRqRsMN2zYIN+jPl91A+eIESPcvFmzZnKMzp07y9eiqFq1qpuHrjHqHgR1o+vcuXPdXH22ZuFihhDvZt+CggJ32ccee0yuRxWRqO1asWKFm0e9R6g03ndQXcu8e1HOOXXqlJvv2bPHzdW9lunmFV+o783TTz8t16Peo4oo1H19ofthvvOd78jXQrybrNV34ciRI3I9K1eudHNVHLBx40Y3V9djM/9ePXWTuIe/CAEAgNhiIgQAAGKLiRAAAIgtJkIAACC2mAgBAIDYSk/JitCiRQv5mqrEUo9hf+ONN9y8efPmcowoj0E/x6sGUHfdP/PMM3I9a9eudXNV6aX2o2XLlnKM6tWry9fSYeLEifK1Z5991s137tzp5upJ4qNHj5ZjqArCVKjqk1BFRYcOHdxcPU5ePca/QYMGpWzdhVNVVePHj5fvUU9lVsdQSVflW4iqALn99tvle9QxVxWaixcvdvPQ9yzUIibEuw58/vnn7rKh6s277rrLzfPz8908lVYTqfCOl6qECj0VefPmzW6unmzds2fPMmzdhfOqf1VV3NatW+V6Hn74YTdX3QzUE5xVFa9ZuGo1KvWU6tB1VF3HVQWaaoekzh8zXY1dVvxFCAAAxBYTIQAAEFtMhAAAQGwxEQIAALHFRAgAAMQWEyEAABBbF7XuVTXzNDNbtWqVm6uywW7durl5qEQ+laakXhmeKs0LNZqbOnWqm6uSbFVGfuWVV8oxTp48KV9Lh2PHjsnX5s2b5+bq+NWuXdvN//3vf8sxVFO+0njvU+di6ByZPHmym/fv39/Nx4wZ4+Y1a9aUY1xsobJW1bA4JyfHzdU5HWqOm+oxLCvV3NhMP1JAXXvuuOMON2/cuLEcI52PeFCPCAg1fVUNLdV77r33XjdXjy0xMytfvrx8TfGOu2rIrJrNmummwVOmTHHzXr16ubl6ZIJZ+h4poM63vn37yvfs2rXLzdU5qsrkmzZtWsrWXVzqkSJmuvmx+u726dPHzXNzc+UYXhPjKPiLEAAAiC0mQgAAILaYCAEAgNhiIgQAAGKLiRAAAIittFSNffzxx27+4osvyvds27bNzVUVkaroSHdDS6/aQVVzLFy4UK7n8OHDbl6rVi0379y5cxm27uJQd/yHGqL+85//dHNVvaCayjZs2FCOUaVKFflaiFcJpsZv1qyZXM++ffvcvH379m4eqi76X/nlL38Z+T3du3d387vvvtvNVbVMOp04ccLNZ8yYId8zc+ZMN9++fbubDxw40M3r1asnx1BNKEOSyaRbbaY+x1BFzKxZs9y8X79+bh5qcKqkUvnnvUdV2arKMDPd8DbUbNvzTTSbVedCx44d5XsmTZrk5up8nz59upunclxL4x1DtV1vvfWWXI9qsK7cfPPNbn4xq2/5ixAAAIgtJkIAACC2mAgBAIDYYiIEAABii4kQAACIrchVY2fPni25kiv81axevVquR/Wqevfdd9382WefdXPVO8cseo+cZDLp7t/p06fd5UN9zoYOHermixcvdvNx48aVvoEXieoptn//fvketX916tRx84oVK7p5qH9MqtUqXkWO6hfXsmVLuS7VC+fTTz9183feecfNVU+vVHlVRKoyY+7cuXI96jt1/PhxN584caKbT5s2TY6RiigVR/n5+XI96tgePHjQzVWfvFQqw0KSyaR7TcnOznaXD/UBU1WPqjJu69atbt6kSRM5hqqaVdR3MJV+UKo34/r16908atVxKpLJpDuOqgiuVKmSXNdNN93k5q+99pqbp7tKOiTKdSbUl/L222938xUrVrj5okWL3Hzw4MFyjAvFX4QAAEBsMRECAACxxUQIAADEFhMhAAAQW0yEAABAbEWuGvMqCFRPqFCvKFWJsXz5cjdXFR0hXs+pkEQi4VbAff755+7y7733nlyX6julet6oioqo+5AKVVGlKsDMdF8kVd3TtWtXN1eVFhfCq1gpKipyl122bJlcjzpWal1q39NJVeSo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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109a1d358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "components = pca.transform(example_digits)\n",
    "filtered_digits = pca.inverse_transform(components)\n",
    "\n",
    "plot_digits(filtered_digits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
